<?php
// API测试文件 - 上传到服务器根目录进行测试

// 显示所有错误
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h2>API测试</h2>";

// 1. 测试PHP版本
echo "<p><strong>PHP版本:</strong> " . phpversion() . "</p>";

// 2. 测试必要的PHP扩展
$extensions = ['PDO', 'pdo_mysql', 'json', 'mbstring'];
echo "<p><strong>PHP扩展检查:</strong></p><ul>";
foreach ($extensions as $ext) {
    $status = extension_loaded($ext) ? '✅' : '❌';
    echo "<li>{$ext}: {$status}</li>";
}
echo "</ul>";

// 3. 测试数据库连接
echo "<p><strong>数据库连接测试:</strong></p>";
try {
    require_once 'config.php';
    
    $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
    $pdo = new PDO($dsn, DB_USER, DB_PASS);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "<p style='color: green;'>✅ 数据库连接成功!</p>";
    
    // 测试表是否存在
    $tables = ['users', 'bookmarks', 'user_sessions'];
    echo "<p><strong>数据表检查:</strong></p><ul>";
    foreach ($tables as $table) {
        try {
            $stmt = $pdo->query("SELECT COUNT(*) FROM {$table}");
            $count = $stmt->fetchColumn();
            echo "<li>{$table}: ✅ (记录数: {$count})</li>";
        } catch (Exception $e) {
            echo "<li>{$table}: ❌ ({$e->getMessage()})</li>";
        }
    }
    echo "</ul>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ 数据库连接失败: " . $e->getMessage() . "</p>";
    
    // 提供常见解决方案
    echo "<p><strong>可能的解决方案:</strong></p>";
    echo "<ul>";
    echo "<li>检查数据库主机地址（可能不是localhost）</li>";
    echo "<li>检查数据库名称（虚拟主机通常有前缀）</li>";
    echo "<li>检查用户名和密码</li>";
    echo "<li>确保数据库用户有足够权限</li>";
    echo "<li>检查数据库是否已创建</li>";
    echo "</ul>";
}

// 4. 测试API文件
echo "<p><strong>API文件检查:</strong></p><ul>";
$apiFiles = ['api/auth.php', 'api/bookmarks.php'];
foreach ($apiFiles as $file) {
    if (file_exists($file)) {
        echo "<li>{$file}: ✅</li>";
    } else {
        echo "<li>{$file}: ❌ 文件不存在</li>";
    }
}
echo "</ul>";

// 5. 测试目录权限
echo "<p><strong>目录权限检查:</strong></p><ul>";
$dirs = ['logs'];
foreach ($dirs as $dir) {
    if (!file_exists($dir)) {
        mkdir($dir, 0755, true);
    }
    if (is_writable($dir)) {
        echo "<li>{$dir}: ✅ 可写</li>";
    } else {
        echo "<li>{$dir}: ❌ 不可写</li>";
    }
}
echo "</ul>";

echo "<hr>";
echo "<p><strong>如果所有检查都通过，请删除此测试文件以确保安全。</strong></p>";
?>
